#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
#include<string.h>
//学生信息包括：学号，姓名，年龄，性别，出生日期，地址，电话，E-mail等。设计一学生信息管理系统，要求完成以下功能：
//系统以菜单方式工作
//学生信息录用功能（学生信息以文件的形式保存）----输入
//学生信息浏览功能----输出
//查询、排序功能----算法
#define INITIAL_MAN 5

#define NUM 12
#define NAME 20
#define SEX 6
#define BIR 11
#define TEL 12
#define MAIL 20
#define ADDRESS 30
//枚举
enum Way
{
	Exit,
	Add,
	Del,
	Search,
	Modify,
	Display,
	Empty,
	Sort_num
};
//学生信息
typedef struct Message
{
	char number[NUM];
	char name[NAME];
	int age;
	char sex[SEX];
	char birthday[BIR];
	char tel[TEL];
	char E_mail[MAIL];
	char address[ADDRESS];
}Message;
//学生表
typedef struct STU 
{
	Message* data;
	int sz;
	int capacity;
}STU;
//顺序表


//菜单
void menu();
//打印标题
void Print_head();
//动态初始化学生表
void Init_Stu(STU* ps);
//扩容
void Expasion_capacity(STU* ps);
//增添数据
void Add_message(STU* ps);
//打印单个学生信息
void Print_pos(STU* ps, int index);
//显示学生表
void Display_message(const STU* ps);
//删除学生
void Delete_message(STU* ps);
//查找学生
int Search_message(const STU* ps);
//修改选项
void Modify_menu();
//修改学生姓名
void modify_name(STU* ps, int index);
//修改学生出生日期
void modify_birthday(STU* ps, int index);
//修改学生邮箱
void modify_E_mail(STU* ps, int index);
//修改学生性别
void modify_sex(STU* ps, int index);
//修改学生年龄
void modify_age(STU* ps, int index);
//修改学生电话
void modify_tel(STU* ps, int index);
//修改学生地址
void modify_address(STU* ps, int index);
//修改学生信息
void Modify_message(STU* ps);
//清空学生
void Empty_book(STU* ps);
//比较函数
int cmp(const void* elm1, const void* elm2);
//按学号排序
STU* sort_number(STU* ps);
//销毁通讯录
void Release_stu(STU* ps);
//文件加载
void Loadstu(STU* ps);
//保存学生表
void Save_stu(STU* ps);